package com.OctTwentyFour;

/**
 * 915. 分割数组
 * 给定一个数组 nums ，将其划分为两个连续子数组 left 和 right， 使得：
 *
 * left 中的每个元素都小于或等于 right 中的每个元素。
 * left 和 right 都是非空的。
 * left 的长度要尽可能小。
 * 在完成这样的分组后返回 left 的 长度 。
 *
 * 用例可以保证存在这样的划分方法。
 *
 *
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/partition-array-into-disjoint-intervals
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 2022/10/24 08:43
 */

/**
 *  通过当前值的最大值以及左边的最大值来进行操作，当当前左边最大值大于nums【i】时，更新长度和左边最大子
 */

public class Solution915 {

    public int partitionDisjoint(int[] nums) {
        int max=nums[0];
        int leftMax=nums[0];
        int index=0;
        for (int i=0;i<nums.length;i++)
        {
            max=Math.max(max,nums[i]);
            if (nums[i]<leftMax)
            {
                leftMax=max;
                index=i;
            }
        }
        return index+1;
    }

    public static void main(String[] args) {
        Solution915 solution915=new Solution915();
        System.out.println(solution915.partitionDisjoint(new int[]{1,1,1,0,6,12}));
    }

}
